\documentclass[UTF8]{ctexart}

\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{ctex}
\usepackage{tikz}
\usepackage{texdraw}
\setlength{\parindent}{2em}

\title{作业4：二叉树与节点的逻辑设计}

\author{唐瑞良\\ 强基工程力学 3210105852}

\begin{document}

\maketitle
\section{个人理解}
\indent 个人认为，数据结构最本原的特征是利用指针将各个数据联系在一起，而数据结构最基本的是每一个节点。\\
\indent 目前我们学习过的两种数据结构：链表和树，他们的基本结构都是单个节点的结构体，这个结构体包含了其存储的值以及两个指针。如果我们要创建双链表，就定义两个指针为$prev$和$next$,如果我们要创建树，就定义他们为$left$和$right$。所以在头文件中，我首先构造了单个节点的类。\\
\indent 基于节点类，我们能够派生出树和链表。链表是数组的进阶，它实现了动态容量的数据存储，但他也仅完成了上述工作，实现在其中的查找将随着数据量的提升变成复杂的工作($O(n)$)。而树的特性使得我们能够容易的完成某一值的查找($O(logn)$)。在头文件中，我从节点类派生出了二叉树类，他包含了基本的功能：插入，删除，查找，打印。在此之外，一棵树的数据范围也是其重要的特征，所以我又加入了找寻最大最小值的功能。\\
\indent 最后，我加入了平衡树，这是对二叉树的优化。在头文件中，我从二叉树类派生出了平衡树类，引入了$balance$函数，使得平衡功能实现。

\end{document}
